/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controller;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

import model.ModelRecibirOFAD;
import tiendagui.internal.JInternalFrameImpl;
import tiendagui.internal.JInternalFrameRecibirOFAD;
import controller.utils.ControllerTable;
import entities.vo.ArticuloVO;
import entities.vo.ItemTablaVO;
import entities.vo.OFADVO;

/**
 *
 * @author Jhonny
 */
public class ControllerRecibirOFAD  extends Controller implements ControllerTable{
    
    private List<ArticuloVO> 	nuevosArticulos;
    private OFADVO				ofad;
    public ControllerRecibirOFAD(JInternalFrameImpl dialog, ModelRecibirOFAD model) {
        super(dialog,model);
        nuevosArticulos = new LinkedList<ArticuloVO>();
    }

    @Override
    public void initComponentView() throws FileNotFoundException,IOException {
        List<ArticuloVO> articulos = null;        
        List<ArticuloVO> articulosExistentes = null;
        ofad = ((ModelRecibirOFAD)model).getOFAD(dialog.getPath());
        articulos = ofad.getArticulos(); 
        nuevosArticulos =((ModelRecibirOFAD)model).getArticulosNuevos(articulos);
        articulosExistentes =((ModelRecibirOFAD)model).getArticulosExistentes(nuevosArticulos,articulos);
        
        initDatosTablaArticulosNuevos(((JInternalFrameRecibirOFAD)dialog).getTablaNuevos(),nuevosArticulos);
        initDatosTablaArticulos(((JInternalFrameRecibirOFAD)dialog).getTablaExistentes(),articulosExistentes);
    }

    private void initDatosTablaArticulosNuevos(JTable table,List<ArticuloVO> articulos) {
    	deleteTable(table);
        if(articulos!=null){
            for (ArticuloVO item : articulos) {
                ((DefaultTableModel)table.getModel()).addRow(
                new Object[]{item.getReferencia(),item.getDescripcion(),item.getPrecioUnitario(),
                		item.getPrecioOferta()});
            }
        }
		
	}

	@Override
    public ItemTablaVO getArticulo() {
        ItemTablaVO item = null;
        return item;
    }
	/**
	 * El articulo podria estar en la base o ser un articulo nuevo
	 */
    @Override
    public ArticuloVO getArticulo(Integer referencia) {
    	ArticuloVO articulo = null;
    	articulo = model.getArticulo(referencia);
    	if(articulo==null){
    		for (ArticuloVO articuloVO : nuevosArticulos) {
				if(articuloVO.getReferencia().equals(referencia)){
					articulo = articuloVO;
					break;
				}
			}
    	}
        return articulo; 
    }

	public void aceptar() {
		String mensaje = ((ModelRecibirOFAD)model).recibirOFAD(ofad);
		JOptionPane.showMessageDialog(null, mensaje);
	}

	@Override
	public void postAgregar() {
	}

	@Override
	public void postEliminar() {
	}
	
	public void setPuntosPedidoArtNuevos(ArrayList<Object> datos) {
		for (int i = 0; i < datos.size(); i+=2){
			for (ArticuloVO artIt : ofad.getArticulos()){
				if (artIt.getReferencia().equals((Integer)datos.get(i))){
					artIt.setPuntoPedido((Integer)datos.get(i+1));
				}
			}
		}
	}


}
